package demo01;

/*
 * 对于成员变量来说，如果使用final关键字修饰，那么这个变量照样是不可变的。
 * 注意事项：
 * 1. 由于成员变量具有默认值，所以用了final之后不会再给默认值了，必须手动赋值
 * 2. 对于final修饰的成员变量，要么使用直接赋值，要么通过构造方法赋值，二者只能选其一
 * 3. 如果使用构造方法赋值，必须保证类当中所有重载的构造方法，最终都会对final的成员变量进行赋值
 * 4. final修饰的常量名称有命名规范，所有字母要大写
 */
public class Person {
    private final String NAME/* = "土司鸡"*/; // final修饰的成员变量如果直接赋值，就不能在构造方法中再赋值

    public Person() { // 如果使用构造方法，就必须在其中进行赋值，且所有重载的构造方法都要赋值
        NAME = "土司鸡"; // 构造1赋值
    }

    public Person(String name) {
        this.NAME = name; // 构造2赋值
    }

    public String getName() {
        return NAME;
    }

    // final修饰后的成员变量不再能改变值，因此不能设置set方法修改其值
    // public void setName(String NAME) {
    //     this.NAME = NAME;
    // }
}
